Architecture Questions
1. Benefits to making state machine fully event driven i.e., one loop through the state machine then wait for next event:
a. character arrives on UART
b. I2C exchange completes
c. checkSystemHealth timer fires
2. Is all a devices activity properly encapsulated in that devices class?
3. How can I better separate fundamental device actions, like getPosition(), from the details specific to a particular GPS device like a uBlox M8?
4. Seems like instantiating a FIFO per device is less race prone than a single mainFIFO even at the expense of having to add a checkDeviceXYZFIFO() function to a checkAllDeviceFIFOs() function in main.
5. How hard would it be and is there any benefit to moving the state machine processing code into the stateBase class so that multiple state machines can be running simultaneously or hierarchically?
6. Should I settle on std::string, etl::string c strings, char arrays or ???